1. Field
The present disclosure relates generally to telecommunications, and more particularly, to forward error correction in a distribution system.
2. Background
In telecommunications, information is transmitted over a communications channel between a transmitter and receiver. This channel is a non-ideal, bandwidth limited path which imposes limits on the amount of information that can be transmitted reliably. These limits together with other properties of the channel, such as noise and interference, often cause errors in the transmitted information.
A number of techniques have been utilized in the past to deal with the effects of a non-ideal communications channel. Some of these techniques include various forms of forward error correction (FEC). FEC is a signal processing technique that adds redundancy to the transmitted information using a predetermined algorithm. The added redundancy allows the receiver to detect and possibly correct errors in the transmitted information.
The two major types of FEC are block coding and convolutional coding. Block coding works on a block of information to produce a codeword that is transmitted to the receiver. The receiver processes the received codeword in order to retrieve the block of information. Various operations may be performed to identify and correct errors. Convolution coding, on the other hand, works by encoding each bit of information based upon the bits that preceded it to produce a stream of code symbols. In the receiver, a convolutional decoder estimates the mostly likely bit sequence that produced the code symbol stream transmitted over the channel.
The most recent development in FEC is turbo coding. Turbo coding is a powerful FEC technique that uses two parallel convolutional encoders and an interleaver to produce a stream of code symbols. Typically, a block of bits with an error detection code is provided to a turbo encoder, resulting in a turbo encoded packet containing multiple code symbols. The error detection code may be parity bits, a checksum, a cyclic redundancy check (CRC) code, or the like. These error detection codes are used by an iterative turbo decoder in the receiver to determine if the turbo encoded packet is successfully decoded during the initial iterations, and if so, terminate the decoding process early.
Turbo codes and block codes are frequently combined in concatenated coding schemes to provide more powerful error correction capability. In these coding schemes, the turbo codes are used to initially decode the information and the block codes are used to correct any errors that remain. To the extent that the turbo codes are able to correct all the errors, the block decoding process can be disabled.
The various FEC techniques described thus far have certain limitations. In particular, these techniques are extremely efficient in correcting errors introduced in the communications channel between the transmitter and receiver, but do not account for errors that might exist in the information prior to encoding at the transmitter. This situation is most likely to exist in a distribution system where the transmitter is used to distribute information from a content source to one or more receivers. In this configuration, information may be lost or corrupted during transmission between the content provider and the transmitter, and not detectable by the FEC implemented between the transmitter and receiver. This may be especially problematic when the information from the content source includes its own FEC, which could be disabled at the receiver unless the receiver is made aware that the information is corrupted.